1. Field of the Invention
The present invention relates to a data synchronous system applicable to, e.g. a redundant system having an active and a standby server, and a method of synchronizing data in such a data synchronous system.
2. Description of the Background Art
A system that is required to have high reliability, such as a call server providing an IP (Internet Protocol) telephone service, is generally configured to have an active and a standby server as shown in FIG. 2. The active and standby servers are connected via an IP network 511, which allows IP communicating terminals 512 to connect. The active and standby servers have a respective, redundancy management function of mutually confirming the existence of a mating server, as depicted with a box 513 in FIG. 2. That function is implemented by, e.g. redundancy management process sections 51A and 51B. When the active server 5A cannot provide services any longer due to a failure or a software bug, the sections 51A and 51B switch the standby server 5B to its active state. As such, if one server fails, the other server can continue to provide services.
Recently, as disclosed by U.S. patent application publication No. US 2006/0224918 A1 to Koike, memory synchronization can be performed between the active and standby servers to transfer call information from a system zero to a system one in such a manner that, while a call is established, information on that call is transferred from the system zero acting in its active state to the system one standing by, thus allowing the call having originated on the system zero to be switched to the system one without being disconnected.
As seen from FIG. 3, in the Koike system, an application process section 52A of the active server 5A changes data, and stores the changed data 521 in a shared memory segment array 53A and inputs to a synchronous request queue 54A the positional information 522, such as storage location address and size, of the changed data 521. Then, a data transmission/reception process section 55A reads out the positional information 551 from the synchronous request queue 54A, and reads out the data 552 stored in the shared memory segment array 53A on the basis of the positional information 551 to transfer the read data 553 to the standby server 5B. In the standby server 5B, the data transmission/reception process section 55B reflects the readout data 553 on a shared memory segment array 53B as reflecting data 554.
In the application process of a call server, when providing a telephone service, it is generally necessary to respond immediately. In the above-mentioned Koike system, the data can be transferred from the active server to the standby server by a separate process from the application process, thereby avoiding delays otherwise caused in the application process.
In the Koike system, however, the application process and the data transmission/reception process run in parallel with each other. In FIG. 4, while the application process section 52A is executing update 523 of a data segment 6 in the shared memory segment array 53B, the data segment 6 may include updated data 61 and not updated data 62. Consequently, as shown in FIG. 4, the data transmission/reception process section 55A may perform the readout 555 of the data segment 6 still being changed by the application process section 52A.
Thus, the conventional system has a problem that because the application process and the data transmission/reception process run in parallel with each other, when access to the shared memory segment array is not restricted e.g. by semaphore, there is a possibility that data being changed will be transmitted to the standby system. In such a case, as shown in FIG. 5, the data segment 6 will be transferred to the data transmission/reception process section 55B in the standby server 5B as the data changed halfway 556 so that the data 556 is reflected on the shared memory segment array 53B as reflecting data 557. In the state shown in FIG. 5, if the active server 5A fails, then the application process section 52B of the standby server 5B may provide services with the data changed halfway 556.
When a plurality of processes read out one and the same data in a shared memory, a POSIX (Portable Operating System Interface) semaphore implemented by a UNIX (trademark) computer operating system, such as LINUX (trademark), is generally available. However, the use of the POSIX semaphore is not preferable because, when the transmission/reception process is operating for data synchronization, the application process will be stopped in operation.